package com.Algorithm.HUAWEI.three20220323;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: zjz
 * @Date: 2022/04/18/10:37
 * @Description:
 * @Target:
 */
public class 找出字符串中第一个只出现一次的字符 {
    /*
    * 描述
    找出字符串中第一个只出现一次的字符


    数据范围：输入的字符串长度满足 1≤n≤1000


    输入描述：
    输入一个非空字符串

    输出描述：
    输出第一个只出现一次的字符，如果不存在输出-1
    *
    * 输入：
    asdfasdfo


    输出：
    o

    *
    * */
    // aaacdcddfsagewgb ---f
    // 可以肯定的是，他必然得走完一次遍历。
    // method1: 第一次遍历，用set存入，第一次进入就加进去，第二次进入就删除，第三次？ 用两个hashset，第一个是存入判定，第二个是真正移除名单。
    // 考虑比起hashMap计次，哪个好点。 map走一遍，然后走自身。set走一遍，还得再走一遍，最差为n^2

    public static void main(String[] args) {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String ss = "asdfasdfo";
        HashMap<Character,Integer> map  = new HashMap<>();
        int result = 0;
        for (int i = 0; i < ss.length(); i++) {
            if (map.containsKey(ss.charAt(i))){
                map.put(ss.charAt(i),map.get(ss.charAt(i))+1);
            }else {
                map.put(ss.charAt(i),1);
            }

        }

//        map.entrySet().forEach(System.out::println);


        boolean flag = false;

/*
        for (Map.Entry<Character, Integer> map1:map.entrySet()){
            if (map1.getValue()==1){
                flag = true;
                System.out.println(map1.getKey());
                break;
            }
        }
*/


        for (int i = 0; i < ss.length(); i++) {
            if (map.get(ss.charAt(i))==1){
                flag = true;
                System.out.println(ss.charAt(i));
                break;
            }

        }


        if (flag == false){
            System.out.println("-1");
        }

    }
}
